import request from '@/config/axios'

// ERP基础资料-客户资料 VO
export interface BaseCustomerVO {
  id: string // id
  number: string // 客户编号
  name: string // 客户名称
  customerFullName: string // 客户全称
  customerType: string // 客户类型
  insideGroup: string // 集团内外
  declareContacts: string // 报关联系
  deliveryContacts: string // 送货联系
  financialContacts: string // 财务联系
  factoryBusinessPerson: string // 本厂业务员
  factorySalesPerson: string // 本厂销售员
  customerPhone: string // 电话
  customerFax: string // 传真
  leader: string // 负责人
  kickbackRate: number // 回扣率
  businessRate: number // 业务比
  customerAddress: string // 公司地址
  remark: string // 备注
  unitPriceRoundingMode: string // 单价处理方式
  unitPriceDecimalPlaces: number // 单价小数位
  totalPriceRoundingMode: string // 金额处理方式
  totalPriceDecimalPlaces: number // 金额小数位
  monthSettlementPeriod: number // 月结天数
  monthSettlementDate: number // 每月对帐日
  monthSettlementDiscount: number // 月结折扣
  paymentMode: string // 付款方式
  currency: string // 币别
  defaultUnit: string // 默认单位
  decimalProcessingMode: string // 小数处理方式
  deliveryNoteAccountSet: string // 送货单账套
  deliveryArea: string // 送货区域
  deliveryNoteLetter: string // 送货单字母
  deliveryNoteDisplayItems: boolean // 送货单显示套件子件
  quoteTaxRate: number // 报价税率
  orderSalesControl: string // 订单销售控制
  orderGiveOthers: boolean // 订单允许送给别的客户
  defaultSettlementMode: string // 默认结算方式
  profitRate: number // 利润率
  valuationMode: string // 算价方式
  valuationFormula: string // 金额计算公式
  valuationUnit: string // 计价单位
  deliveryDistance: number // 送货里程
  deliveryDistanceUnit: string // 送货里程单位
  deliveryNoteRows: number // 送货单行数
  customerCategory: string // 客户类别
  itemsStocked: boolean // 配件生产是否入库
  labelFormat: string // 标签格式
  excessQuantityAsSpare: boolean // 送货单超订单部分转为备品
  commonQuoteNumber: string // 通用报价单号
  processedCardboardValuationScheme: string // 净板计价规格方案
  defaultCustomerForCardboardProduction: boolean // 自动创建纸板生产单默认客户
  deliveryUnitPriceFrom: string // 送货单单价来自
  markupPricingQuoteNumber: string // 采用加价设置报价单号
  cardboardProductionProductType: string // 纸板生产单对应的产品类型
  customerQuoteNumber: string // 客户报价单
  taxType: string // 税别
  cardboardProductionQuoteMode: string // 纸板订单报价方式
  cardboardProductionProcessingFeeFormula: string // 纸板生产单加工费计算公式
  cardboardMaterialAreaUnitPriceFormula: string // 纸板材质面积单价公式
  cardboardProcessingFeeScheme: string // 纸板加工费方案
  cardboardProductionDiscount: number // 纸板生产单折扣
  cardboardMarkupPricingSetNumber: string // 纸板加价设置单号
  accountingVoucherCode: string // 会计凭证代码
  importTemplate: string // 导入模板
  groupOrderImportTemplate: string // 导入拼单模板
  saleOrderImportTemplate: string // 销售订单导入模板
  exportScheme: string // 导出方案
  groupOrderExportScheme: string // 拼单导出方案
  taxNumber: string // 税号
  bankAccountNumber: string // 账号
  bankOfDeposit: string // 开户行
  bankOfDepositAddress: string // 开户行地址
  totalAreaDecimalPlaces: number // 总面积位数
  areaRoundingMode: string // 面积取舍方式
  initialAmount: number // 期初
  creditLimitFlag: boolean // 开启信用控制
  creditLimitScheme: string // 信用控制方案
  creditLimitThreshold: number // 锁单信用额
  tempCreditLimitFlag: boolean // 开启临时信用额
  termExtensionDays: number // 数期延长天数
  creditLimitAlert: number // 提醒信用额
  tempCreditLimit: number // 临时信用额
  tempCreditLimitBegin: Date // 临时信用开始时间
  tempCreditLimitEnd: Date // 临时信用结束时间
  tempCreditEditor: string // 临时信用编辑人
  headquarters: string // 总公司
  belong: string // 属于
  defaultProductionOrderSpecialOffer: boolean // 生产单默认特价
}

// ERP基础资料-客户资料 API
export const BaseCustomerApi = {
  // 查询ERP基础资料-客户资料分页
  getBaseCustomerPage: async (params: any) => {
    return await request.get({ url: `/erp/base-customer/page`, params })
  },

  // 查询ERP基础资料-客户资料详情
  getBaseCustomer: async (id: number) => {
    return await request.get({ url: `/erp/base-customer/get?id=` + id })
  },

  // 新增ERP基础资料-客户资料
  createBaseCustomer: async (data: BaseCustomerVO) => {
    return await request.post({ url: `/erp/base-customer/create`, data })
  },

  // 修改ERP基础资料-客户资料
  updateBaseCustomer: async (data: BaseCustomerVO) => {
    return await request.put({ url: `/erp/base-customer/update`, data })
  },

  // 删除ERP基础资料-客户资料
  deleteBaseCustomer: async (id: number) => {
    return await request.delete({ url: `/erp/base-customer/delete?id=` + id })
  },

  // 导出ERP基础资料-客户资料 Excel
  exportBaseCustomer: async (params) => {
    return await request.download({ url: `/erp/base-customer/export-excel`, params })
  },

// ==================== 子表（ERP基础资料-客户送货地址） ====================

  // 获得ERP基础资料-客户送货地址列表
  getBaseCustomerDeliveryAddressListByCustomerId: async (customerId) => {
    return await request.get({ url: `/erp/base-customer/base-customer-delivery-address/list-by-customer-id?customerId=` + customerId })
  },

// ==================== 子表（ERP基础资料-客户备注） ====================

  // 获得ERP基础资料-客户备注列表
  getBaseCustomerRemarkListByCustomerId: async (customerId) => {
    return await request.get({ url: `/erp/base-customer/base-customer-remark/list-by-customer-id?customerId=` + customerId })
  }
}
